package com.zx.util;

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;


/**
 * 时间转换工具类
 *
 * @author 张雪
 * @date 2015-8-20
 */
public class DateUtil {

    /**
     * 将汉字一~十二的转换成1~12
     *
     * @return
     */
    public static int getNum(String str) {
        String s = str.replace("&nbsp;", "");
        if ("一月".equals(s)) {
            return 1;
        }
        if ("二月".equals(s)) {
            return 2;
        }
        if ("三月".equals(s)) {
            return 3;
        }
        if ("四月".equals(s)) {
            return 4;
        }
        if ("五月".equals(s)) {
            return 5;
        }
        if ("六月".equals(s)) {
            return 6;
        }
        if ("七月".equals(s)) {
            return 7;
        }
        if ("八月".equals(s)) {
            return 8;
        }
        if ("九月".equals(s)) {
            return 9;
        }
        if ("十月".equals(s)) {
            return 10;
        }
        if ("十一月".equals(s)) {
            return 11;
        }
        if ("十二月".equals(s)) {
            return 12;
        }
        return 0;
    }

    /**
     * @param date
     * @return
     * @Title: java.util.Date --> java.time.LocalDateTime
     * @date: 2019年10月4日下午11:22:32
     * @author: zhangxue
     */
    public static LocalDateTime UDateToLocalDateTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        return LocalDateTime.ofInstant(instant, zone);
    }

    /**
     * java.util.Date --> java.time.LocalDate
     *
     * @param date
     * @return
     * @date: 2019年10月4日下午11:24:19
     * @author: zhangxue
     */
    public static LocalDate UDateToLocalDate(Date date) {
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        return localDateTime.toLocalDate();
    }

    /**
     * java.util.Date --> java.time.LocalTime
     *
     * @param date
     * @return
     * @date: 2019年10月4日下午11:24:27
     * @author: zhangxue
     */
    public static LocalTime UDateToLocalTime(Date date) {
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        return localDateTime.toLocalTime();
    }

    /**
     * java.time.LocalDateTime --> java.util.Date
     *
     * @param localDateTime
     * @return
     * @date: 2019年10月4日下午11:25:53
     * @author: zhangxue
     */
    public static Date LocalDateTimeToUdate(LocalDateTime localDateTime) {
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        return Date.from(instant);
    }

    /**
     * java.time.LocalDate --> java.util.Date
     *
     * @param localDate
     * @return
     * @date: 2019年10月4日下午11:26:01
     * @author: zhangxue
     */
    public static Date LocalDateToUdate(LocalDate localDate) {
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        return Date.from(instant);
    }
}